package com.itheima.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * 增强内容
 *
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * @Version 1.0
 */
public class AopAdvice {
    //JoinPoint ；连接点（真实的方法）
    //在方法执行之前，记录执行的时间，方法名称，参数是什么
    public void before(JoinPoint joinPoint){
        //执行的时间
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        String dateStr = sdf.format(now);
        //获取方法的名称
        Signature signature = joinPoint.getSignature();
        //方法的参数
        Object[] args = joinPoint.getArgs();

        System.out.println(dateStr  + " --- " + signature.toString() + "【" + Arrays.toString(args)+ "】");

    }


    //在方法执行之后，记录执行的时间，方法名称， 返回值是什么
    public void afterReturning(JoinPoint joinPoint, Object result){
        //执行的时间
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        String dateStr = sdf.format(now);
        //获取方法的名称
        Signature signature = joinPoint.getSignature();
        //获取方法的返回值

        System.out.println(dateStr  + " --- " + signature.toString() + "【" +  result +"】");

    }
}
